<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1. 封装函数，实现随机rgb颜色，结果为字符
        //     - 颜色值的范围：0~255

        function randomRGB() {
            var r = random(0, 255);
            var g = random(0, 255);
            var b = random(0, 255);
            return "rgb(" + r + "," + g + "," + b + ")";
        }
        // console.log(randomRGB());


        // 2. 封装函数，实现随机十六进制的颜色，结果为字符
        //     - 颜色值的范围：0~255
        function randomColor() {
            var r = random(0, 255).toString(16);
            var g = random(0, 255).toString(16);
            var b = random(0, 255).toString(16);
            return "#" + addZero(r) + addZero(g) + addZero(b);
        }

        // "#1a2394"
        // 1a
        // 23
        // 94
        // 0~15
        // d
        // 0d
        // str.length < 2

        // console.log(randomColor())

        // 3. 封装函数，实现4位数字的随机验证码
        // random(1000,9999)
        function randomCode() {
            var str = "";
            for (var i = 0; i < 4; i++) {
                str += random(0, 9)
            }
            return str;
            // return Math.random().toString().substr(3, 4);
        }
        // console.log(randomCode());


        // 4. 封装函数，实现4位数字字母混合的随机验证码
        function randomCode2() {
            var s = "";
            // 随机字符库（长度至少是3的倍数，保证每种字符出现的几率是相同的）
            for (var i = 0; i < 10; i++) {
                s += random(0, 9);
                s += String.fromCharCode(random(97, 122));
                s += String.fromCharCode(random(65, 90));
            }
            // 从随机字符库中随机取4个
            var str = "";
            for (var i = 0; i < 4; i++) {
                str += s[random(0, s.length - 1)]
            }

            return str;
        }
        // console.log(randomCode2());


        // 6. 封装计算两个日期之间差值的函数
        //     - 利用参数，传入两个指定日期（字符）
        //     - 返回值为对象，如：{day:x, hour: y, minu: z, sec: s}
        function dateDiff(d1, d2) {
            d1 = new Date(d1);
            // 设置默认参数
            if (d2) {
                d2 = new Date(d2);
            } else {
                d2 = new Date();
            }

            // 计算差值
            var t = Math.abs(d1.getTime() - d2.getTime());

            // 利用数学运算求天，时，分，秒
            var day = parseInt(t / 1000 / 60 / 60 / 24);
            var h = parseInt((t - (day * 24 * 60 * 60 * 1000)) / 1000 / 60 / 60);
            var m = parseInt((t - (day * 24 * 60 * 60 * 1000) - (h * 60 * 60 * 1000)) / 1000 / 60);
            var s = parseInt((t - (day * 24 * 60 * 60 * 1000) - (h * 60 * 60 * 1000) - (m * 1000 * 60)) / 1000)

            // 返回打包之后的数据
            return {
                day: day,
                hour: h,
                minu: m,
                sec: s
            }
        }

        // console.log(dateDiff("2008.8.8", "2022.8.8"));

        // console.log(dateDiff("2008.8.8"));




        function random(max, min) {
            return Math.round(Math.random() * (max - min) + min);
        }
        function addZero(n) {
            return n.length < 2 ? "0" + n : n;
        }

    </script>
</body>

</html>